package code.class3;

/**
 * https://leetcode.cn/problems/container-with-most-water/
 * 盛水最多的容器
 * 给定一个长度为 n 的整数数组 height 。有 n 条垂线，第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线，使得它们与 x 轴共同构成的容器可以容纳最多的水。
 *
 * 解题思路：
 * 1.比较左、右边界较小值，作为容器的瓶颈
 * 2.(r-l)*瓶颈，得到蓄水量
 * 3.与ans进行比较，找到最大蓄水量
 */
public class Code07_maxArea {
    public static void main(String[] args) {
        int[] height = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
        int i = maxArea(height);
        System.out.println("i = " + i);
    }

    private static int maxArea(int[] arr) {
        int ans = 0, l = 0, r = arr.length - 1;
        while (l < r) {
            int maxArea = Math.min(arr[l], arr[r]) * (r - l); // 当前最大面积
            ans = Math.max(ans, maxArea);
            // 瓶颈小的指针进行移动
            if (arr[l] <= arr[r]) {
                l++;
            } else {
                r--;
            }
        }
        return ans;
    }
}
